自定义配置ECI日志采集

ECI支持对接阿里云日志服务SLS,将ECI日志采集到SLS中。本文介绍如何通过环境变量自定义配置ECI日志采集,包括指定项目、日志库、机器组等。

背景信息

阿里云日志服务SLS是针对日志数据的一站式服务,您无需开发就能快捷完成日志数据采集、消费、投递以及查询分析等功能。更多信息,请参见日志服务简介

重要

日志服务支持按量付费,即按照您的实际使用量收费。关于日志服务如何计费,请参见计费概述

默认情况下,创建ECI实例时如果开启了日志采集功能,系统会自动生成一个项目和一个机器组:

  • 项目名称为eci-log-default-project-{Region}-{账号ID}

  • 机器组名称为eci-log-default-machine-group-{Region}

如果您有自定义日志采集的需求,例如需要将日志收集到自定义的项目和日志库,或者需要将不同应用对应的ECI实例加入到不同的机器组,可以通过容器的环境变量传入日志相关的自定义配置,如果日志服务没有环境变量对应的项目、日志库和机器组等,系统将自动创建。

重要

仅在创建ECI实例时才能通过环境变量自定义配置日志采集,更新实例时传入的日志相关环境变量不会生效。

配置说明

创建ECI实例时,可以通过容器的环境变量传入日志相关的自定义配置,包括项目(Project)、日志库(Logstore)、Logtail配置、机器组(Machinegroup)、分区(Shard)、日志保留时间、标签(Tag)等。可配置的环境变量如下:

说明

日志相关环境变量名称的格式前缀为aliyun_logs_{key}{key}表示日志服务中Logtail配置的名称,只能包含小写字母、数字和短划线(-)。

配置对象

环境变量名称

环境变量取值说明

Logtail配置

aliyun_logs_{key}

创建Logtail配置。取值为日志采集路径。

  • 采集标准输出时,取值如下:

    • stdout:采集正常输出和错误信息。

    • stderr-only:只采集错误信息,不采集正常输出。

    • stdout-only:只采集正常输出,不采集错误信息。

  • 采集文本文件时,取值为容器内的文件目录。

项目

aliyun_logs_{key}_project

指定Project。Project名称格式要求如下:

  • 长度为3~63个字符。

  • 仅支持小写字母、数字和短划线(-),且必须以小写字母和数字作为开头和结尾。

说明

项目名称必须全局唯一,创建后不可修改。如果名称格式校验不通过,将直接忽略该配置,采用默认项目。

日志库

aliyun_logs_{key}_logstore

指定Logstore。Logstore名称格式要求如下:

  • 长度为3~63个字符。

  • 仅支持小写字母、数字、短划线(-)和下划线(_),且必须以小写字母和数字作为开头和结尾。

说明

如果名称格式校验不通过,将直接忽略该配置,采用默认日志库。默认情况下,日志库名称与Logtail配置名称{key}相同。

机器组

aliyun_logs_{key}_machinegroup

指定机器组。机器组名称格式要求如下:

  • 长度为3~63个字符。

  • 仅支持小写字母、数字、短划线(-)和下划线(_),且必须以小写字母和数字作为开头和结尾。

说明

如果名称格式校验不通过,将直接忽略该配置,采用默认机器组。

分区

aliyun_logs_{key}_shard

设置日志分区数。取值范围为1~10。

Logstore读写日志必须保存在某一个分区上,默认情况下,每个日志库有2个分区。

日志保留时间

aliyun_logs_{key}_ttl

设置日志保留时间,单位为天。取值范围为1~3650。

  • 取值为3650时,表示永久保留日志。

  • 默认保留90天。

标签

aliyun_logs_{key}_tags

绑定标签。取值格式为tag-key=tag-value,用于对日志进行标识。

配置示例

假设您需要自定义以下日志相关配置项:

  • Logtail配置和Logstore名称:标准输出日志保存到stdout-eci,文本文件日志保存到file-eci。

  • Project名称:project-eci-test

  • 机器组名称:mg-eci-test

说明

以下为示例配置,实际配置请使用您自定义的配置,确保Project名称唯一。

OpenAPI

调用CreateContainerGroup接口创建ECI实例时,可以通过Container.N.EnvironmentVar.N.Key和Container.N.EnvironmentVar.N.Value来设置环境变量。示例如下:

ContainerGroupName=test-sls
Container.1.Name=busybox
Container.1.Image=registry-vpc.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
Container.1.Command.1=/bin/sh
Container.1.Arg.1=-c
Container.1.Arg.2=mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;done
# 采集标准输出
Container.1.EnvironmentVar.1.Key=aliyun_logs_stdout-eci
Container.1.EnvironmentVar.1.Value=stdout
Container.1.EnvironmentVar.2.Key=aliyun_logs_stdout-eci_project
Container.1.EnvironmentVar.2.Value=project-eci-test
Container.1.EnvironmentVar.3.Key=aliyun_logs_stdout-eci_machinegroup
Container.1.EnvironmentVar.3.Value=mg-eci-test
# 采集文本文件
Container.1.EnvironmentVar.4.Key=aliyun_logs_file-eci
Container.1.EnvironmentVar.4.Value=/log/*.log
Container.1.EnvironmentVar.5.Key=aliyun_logs_file-eci_project
Container.1.EnvironmentVar.5.Value=project-eci-test
Container.1.EnvironmentVar.6.Key=aliyun_logs_file-eci_machinegroup
Container.1.EnvironmentVar.6.Value=mg-eci-test

控制台

通过弹性容器实例控制台创建ECI实例时,您可以在容器配置区域选择容器,展开该容器的高级配置,然后打开环境变量开关,添加环境变量。示例如下:

设置环境变量采集日志.png

效果示例

日志服务控制台找到目标Project,单击Project名称后进入日志库,可查看日志信息。示例如下:

标准输出

日志-标准.png

文本文件

日志-文本.png